import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * Stream创建
 */
public class StreamCreate {
    public static void main(String[] args) {
        // 通过 java.util.Collection.stream() 方法用集合创建流
        List<String> list = Arrays.asList("a", "b", "c");

        // 创建一个顺序流
        Stream<String> stream = list.stream();
        System.out.println(stream);

        // 创建一个并行流【内部以多线程并行执行的方式对流进行操作，但前提是流中的数据处理没有顺序要求】，速度大于顺序流
        Stream<String> parallelStream = list.parallelStream();
        System.out.println(parallelStream);

        // 使用java.util.Arrays.stream(T[] array)方法用数组创建流
        int[] array={1,3,5,6,8};
        IntStream streamArray = Arrays.stream(array);
        System.out.println(streamArray);

        // 使用Stream的静态方法：of()、iterate()、generate()
        Stream<Integer> streamStatic = Stream.of(1, 2, 3, 4, 5, 6);

        Stream<Integer> stream2 = Stream.iterate(0, (x) -> x + 3).limit(4);
        stream2.forEach(System.out::println);

        Stream<Double> stream3 = Stream.generate(Math::random).limit(3);
        stream3.forEach(System.out::println);

    }
}
